package co.edu.usbcali.rebio.presentation.backEndBeans;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import javax.faces.model.SelectItem;
import javax.servlet.http.HttpServletRequest;

import co.edu.usbcali.rebio.modelo.RebAgenteBiologico;
import co.edu.usbcali.rebio.modelo.RebDepartamento;
import co.edu.usbcali.rebio.presentation.businessDelegate.BusinessDelegatorView;
import co.edu.usbcali.rebio.utilities.FacesUtils;
import co.edu.usbcali.rebio.utilities.Utilities;

import com.icesoft.faces.component.ext.HtmlCommandButton;
import com.icesoft.faces.component.ext.HtmlInputText;
import com.icesoft.faces.component.ext.HtmlSelectOneMenu;
import com.icesoft.faces.context.effects.JavascriptContext;

public class RebReporteDos {
	
	public HtmlSelectOneMenu cmbAgente;
	public HtmlInputText txtAgente;
	public HtmlInputText txtFechaInicio;
	public HtmlInputText txtFechaFinal;
	private boolean btnErrorf = false;
	private HtmlCommandButton limpiar;
	private List<SelectItem> listAgente = new ArrayList<SelectItem>();
	private HtmlCommandButton btnAceptar;
	
	
	
	public String action_cerrar2(){
		btnErrorf = false;
		return "";
	}
	
	 public String action_clear() {
	    	

	    txtFechaInicio.setValue(null);
	    txtFechaInicio.setDisabled(false);
     	txtFechaFinal.setValue(null);
     	txtFechaFinal.setDisabled(false);
        cmbAgente.setValue("0");
        cmbAgente.setDisabled(false);
        //codigoCli = null;
 
     return "";
 } 
	
	public String action_generarReporte() throws Exception{
		
		try{

			FacesContext fc = FacesContext.getCurrentInstance();
			ExternalContext ec = fc.getExternalContext();
			HttpServletRequest sr = ((HttpServletRequest)ec.getRequest());
			String scheme = sr.getScheme();
			String serverName = sr.getServerName();
			int port = sr.getServerPort();
			String contextPath = sr.getContextPath();
			
			String url = scheme+"://"+serverName+":"+port+contextPath;
			
			String agente = cmbAgente.getValue().toString();
			String fechaInicial = txtFechaInicio.getValue().toString();
			String fechaFinal = txtFechaFinal.getValue().toString();
			
			
			
			if(agente.trim().equals("")  || agente.equals("0")) {
				throw new Exception("El Nombre del agente es de car&#225;cter obligatorio");
			}
			if(fechaInicial.trim().equals("")){
				throw new Exception("La fecha inicial es de car&#225;cter obligatorio");
			}
			
			if(!Utilities.soloNumerosySigno(fechaInicial)){
				throw new Exception("La fecha inicial no esta en el formato establecido dd/mm/aaaa");
			}
			
			if(!Utilities.verificarDias(fechaInicial)){
				throw new Exception("En la fecha inicial esta mal ingresado el dia");
			}
			
			if(!Utilities.verificarMeses(fechaInicial)){
				throw new Exception("En la fecha inicial esta mal ingresado el mes");
				
			}
			
			if(fechaFinal.trim().equals("")){
				throw new Exception("La fecha final es de car&#225;cter obligatorio");
			}
			
			if(!Utilities.soloNumerosySigno(fechaFinal)){
				throw new Exception("La fecha final no esta en el formato establecido dd/mm/aaaa");
			}
			
			if(!Utilities.verificarDias(fechaFinal)){
				throw new Exception("En la fecha final esta mal ingresado el dia");
			}
			
			if(!Utilities.verificarMeses(fechaFinal)){
				throw new Exception("En la fecha final esta mal ingresado el mes");
				
			}
			
			if(!Utilities.compararFechas(new Date(fechaInicial), new Date(fechaFinal))){
				throw new Exception("La fecha inicial es mayor a la fecha final");
				
				
			}
			
			String reportParams = "agente="+agente+"&fechaInicial="+fechaInicial+"&fechaFinal="+fechaFinal;
			//String reportParams1 = "fechaInicial="+fechaInicial;
			//String reportParams2 = "fechaFinal="+fechaFinal;
			//String reportParams = "nit="+factura+"&p2=567";
		
			
			//reportParams +="numCot="+txtNoCotizacion.getValue().toString();
			
			
			String params = 
				  "'"+
				  url+"/servlet/ReporteDosPDF?"+
				  	reportParams + 
				  	//", " + reportParams1 + ", " + reportParams2 + 
				  "', " +
				  "'reportWindow', " +
				  "'" +
				  "width=1024" +
				  ",height=768" +
				  ",status=no" +
				  ",toolbar=no" +
				  ",menubar=no" +
				  ",location=no" +
				  ",scrollbars=yes" +
				  "'"; 
			
	//		System.out.println("window.open("+params+");");
			
			//llamar al servlet SatReportServlet
			//JavascriptContext.addJavascriptCall(fc,"window.open("+params+");");
			JavascriptContext.addJavascriptCall(fc,"location.href="+params+";");	
			
		}catch (Exception e) {
			
			btnErrorf = true;
			btnAceptar.requestFocus();
			FacesUtils.addErrorMessage(e.getMessage());
			
		}
		
		return "";
		
	}
	
	public String action_generarReporteXLS(){
		
		try{

			FacesContext fc = FacesContext.getCurrentInstance();
			ExternalContext ec = fc.getExternalContext();
			HttpServletRequest sr = ((HttpServletRequest)ec.getRequest());
			String scheme = sr.getScheme();
			String serverName = sr.getServerName();
			int port = sr.getServerPort();
			String contextPath = sr.getContextPath();
			
			String url = scheme+"://"+serverName+":"+port+contextPath;
			
			String agente = cmbAgente.getValue().toString();
			String fechaInicial = txtFechaInicio.getValue().toString();
			String fechaFinal = txtFechaFinal.getValue().toString();
				
			if(agente.trim().equals("")  || agente.equals("0")) {
				throw new Exception("El Nombre del agente es de car&#225;cter obligatorio");
			}
			if(fechaInicial.trim().equals("")){
				throw new Exception("La fecha inicial es de car&#225;cter obligatorio");
			}
			
			if(!Utilities.soloNumerosySigno(fechaInicial)){
				throw new Exception("La fecha inicial no esta en el formato establecido dd/mm/aaaa");
			}
			
			if(!Utilities.verificarDias(fechaInicial)){
				throw new Exception("En la fecha inicial esta mal ingresado el dia");
			}
			
			if(!Utilities.verificarMeses(fechaInicial)){
				throw new Exception("En la fecha inicial esta mal ingresado el mes");
				
			}
			
			if(fechaFinal.trim().equals("")){
				throw new Exception("La fecha final es de car&#225;cter obligatorio");
			}
			
			if(!Utilities.soloNumerosySigno(fechaFinal)){
				throw new Exception("La fecha final no esta en el formato establecido dd/mm/aaaa");
			}
			
			if(!Utilities.verificarDias(fechaFinal)){
				throw new Exception("En la fecha final esta mal ingresado el dia");
			}
			
			if(!Utilities.verificarMeses(fechaFinal)){
				throw new Exception("En la fecha final esta mal ingresado el mes");
				
			}
			
			if(!Utilities.compararFechas(new Date(fechaInicial), new Date(fechaFinal))){
				throw new Exception("La fecha inicial es mayor a la fecha final");
				
				
			}
			
			String reportParams = "agente="+agente+"&fechaInicial="+fechaInicial+"&fechaFinal="+fechaFinal;
			//String reportParams1 = "fechaInicial="+fechaInicial;
			//String reportParams2 = "fechaFinal="+fechaFinal;
			//String reportParams = "nit="+factura+"&p2=567";
		
			
			//reportParams +="numCot="+txtNoCotizacion.getValue().toString();
			
			
			String params = 
				  "'"+
				  url+"/servlet/ReporteDosXLS?"+
				  	reportParams + 
				  	//", " + reportParams1 + ", " + reportParams2 + 
				  "', " +
				  "'reportWindow', " +
				  "'" +
				  "width=1024" +
				  ",height=768" +
				  ",status=no" +
				  ",toolbar=no" +
				  ",menubar=no" +
				  ",location=no" +
				  ",scrollbars=yes" +
				  "'"; 
			
	//		System.out.println("window.open("+params+");");
			
			//llamar al servlet SatReportServlet
			//JavascriptContext.addJavascriptCall(fc,"window.open("+params+");");
			JavascriptContext.addJavascriptCall(fc,"location.href="+params+";");	
			
		}catch (Exception e) {
			
			btnErrorf = true;
			btnAceptar.requestFocus();
			FacesUtils.addErrorMessage(e.getMessage());
		}
		
		return "";
		
	}
	
	public boolean isBtnErrorf() {
		return btnErrorf;
	}

	public void setBtnErrorf(boolean btnErrorf) {
		this.btnErrorf = btnErrorf;
	}

	
	public HtmlSelectOneMenu getCmbAgente() {
		
		try {
    		List<RebAgenteBiologico> list = BusinessDelegatorView.findByCriteriaInRebAgenteBiologico(null, null, null, true);
    		listAgente.clear();
    		listAgente.add(new SelectItem(0,"Seleccione un valor"));
    		
    		for (RebAgenteBiologico agenteBiologico : list) {
    			listAgente.add(new SelectItem(agenteBiologico.getAgbNombre()));
			}
		} catch (Exception e) {
			// TODO: handle exception
		}
		
		return cmbAgente;
	}


	public void setCmbAgente(HtmlSelectOneMenu cmbAgente) {
		this.cmbAgente = cmbAgente;
	}
	
	


	public HtmlInputText getTxtAgente() {
		return txtAgente;
	}


	public void setTxtAgente(HtmlInputText txtAgente) {
		this.txtAgente = txtAgente;
	}


	public HtmlInputText getTxtFechaInicio() {
		return txtFechaInicio;
	}

	public void setTxtFechaInicio(HtmlInputText txtFechaInicio) {
		this.txtFechaInicio = txtFechaInicio;
	}

	public HtmlInputText getTxtFechaFinal() {
		return txtFechaFinal;
	}

	public void setTxtFechaFinal(HtmlInputText txtFechaFinal) {
		this.txtFechaFinal = txtFechaFinal;
	}


	public List<SelectItem> getListAgente() {
		return listAgente;
	}


	public void setListAgente(List<SelectItem> listAgente) {
		this.listAgente = listAgente;
	}

	public HtmlCommandButton getLimpiar() {
		return limpiar;
	}

	public void setLimpiar(HtmlCommandButton limpiar) {
		this.limpiar = limpiar;
	}

	public HtmlCommandButton getBtnAceptar() {
		return btnAceptar;
	}

	public void setBtnAceptar(HtmlCommandButton btnAceptar) {
		this.btnAceptar = btnAceptar;
	}
	
	
	
	
	
	

}
